package cluster

import (
	"k8s.io/client-go/kubernetes"
	"k8s.io/client-go/tools/clientcmd"
)

// 定义一个结构体用于描述创建集群所用的配置信息
type ClusterInfo struct { // 集群基本信息
	Id          string `json:"id"`          //集群ID
	DisplayName string `json:"displayName"` //集群名称
	City        string `json:"city"`        //集群所在城市
	District    string `json:"district"`    //集群所在城市区域
}
type ClusterStatus struct { // 集群状态检测结构体
	ClusterInfo
	Version string `json:"version"`
	Status  string `json:"status"`
}
type ClusterConfig struct { // 用于修改
	ClusterInfo
	KubeConfig string `json:"kubeconfig"` //集群kubeconfig配置文件
}

func (c *ClusterConfig) getClusterStatus() (ClusterStatus, error) { // 判断集群状态结构体方法
	clusterStatus := ClusterStatus{}
	clusterStatus.ClusterInfo = c.ClusterInfo
	// 创建clientset
	restConfig, err := clientcmd.RESTConfigFromKubeConfig([]byte(c.KubeConfig))
	if err != nil {
		return clusterStatus, err
	}
	clientset, err := kubernetes.NewForConfig(restConfig)
	if err != nil {
		return clusterStatus, err
	}
	serverVersion, err := clientset.Discovery().ServerVersion()
	if err != nil {
		return clusterStatus, err
	}
	clusterStatus.Version = serverVersion.String()
	clusterStatus.Status = "Active"
	return clusterStatus, nil // 如果集群没有问题返回nil说明正常
}
